package com.zrrd.straw1.service;

import com.zrrd.straw1.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zrrd.straw1.service.impl.ServiceException;
import com.zrrd.straw1.vo.RegisterVo;
import com.zrrd.straw1.vo.UserVo;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author zrrd
 * @since 2024-03-03
 */
public interface IUserService extends IService<User> {
    //首页用户信息面板对应方法
    UserVo getCurrentUserVo(String username );


    //为了满足框架的需求，要什么给什么（返回值类型）
    //1.需要提供的条件
    //2.需要什么结果就声明什么类型
    //3.见名知义的方法名
    UserDetails getUserDetails(String username);

    //控制器接收到数据后，是否能注册的判断就交给业务层
    //业务层先定义接口，只需要定义方法名，参数列表，返回值即可。
    //返回值类型: 正常情况，逻辑不需要返回结果，
    //如果出问题：可以用抛异常的方式告知前端。异常可以自定义
    void registerStudent( RegisterVo registerVo ) throws ServiceException;

    List<User> getMaster();
    //为了快速根据名字获取老师对象，提供map数据结构
    Map<String,User> getMasterMap();
}
